package daoyu.apps.service.impl;

import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import daoyu.apps.config.Config;
import daoyu.apps.pojo.login.LoginReqDTO;
import daoyu.apps.pojo.login.LoginResDTO;
import daoyu.apps.service.ApiService;
import daoyu.utils.common.SSLUtils;
import lombok.NonNull;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 抖音小程序与抖音交互接口实现
 */
@Service
@Slf4j
public class ApiServiceImpl implements ApiService {

    @Autowired
    private Config config;

    public LoginResDTO loginByCode(@NonNull LoginReqDTO appsLoginReqDTO) {
        try {
            String json = JSON.toJSONString(appsLoginReqDTO);
            log.info("【login的入参】: {}", json);

            String result = doPostRequest(config.getLoginUrl(), json);
            log.info("【login的出参】: {}", result);

            return JSONUtil.toBean(result, LoginResDTO.class);
        } catch (Exception e) {
            log.error("登录请求失败: {}", e.getMessage(), e);
            throw new RuntimeException("登录请求失败", e);
        }
    }

    /**
     * 执行 POST 请求并返回响应体
     *
     * @param url  请求 URL
     * @param body 请求体
     * @return 响应体
     */
    private String doPostRequest(String url, String body) {
        return HttpUtil.createPost(url)
                .header("Content-Type", "application/json")
                .setSSLSocketFactory(SSLUtils.getSSLSocketFactory())
                .body(body)
                .execute()
                .body();
    }
}
